package types

// GetListReq 我负责的任务列表请求参数
type GetListReq struct {
	TodayCountReq
	SearchName string `json:"search_name"` // 搜索名称
	Page       []int  `json:"page"`        // 分页
}

type TaskCountReq struct {
	ProjectId          int64    `json:"project_id"`
	TodoStepCategoryId []int64  `json:"todo_step_category_id"`
	StartTime          int64    `json:"start_time"`
	EndTime            int64    `json:"end_time"`
	TaskStepType       []string `json:"task_step_type"`        // 工序类型
	IsMyResponsible    bool     `json:"is_my_responsible"`     // 是否我负责的任务
	DepartmentId       uint64   `json:"department_id"`         // 部门id
	ExecutorUserIdList []int64  `json:"executor_user_id_list"` // 执行人筛选
	DateType           string   `json:"date_type"`             // 时间筛选类型
	OnlyNotDone        bool     `json:"only_not_done"`         // 仅显示未完成
	StandardOrOther    string   `json:"standard_or_other"`     // 标准或者是其他
}

type DelayCountReq struct {
	ProjectId          int64   `json:"project_id"`
	TodoStepCategoryId []int64 `json:"todo_step_category_id"`
	StartTime          int64   `json:"start_time"`
	EndTime            int64   `json:"end_time"`
	DepartmentId       uint64  `json:"department_id"` // 部门id
}

// DelayCountRes 任务延期统计结果
type DelayCountRes struct {
	Total   int64 `json:"total"`    // 总数
	Pass    int64 `json:"pass"`     // 已通过
	NotPass int64 `json:"not_pass"` // 未通过
}

// GetListRes 我负责的任务列表返回参数
type GetListRes struct {
	Id            int64  `json:"id"`
	Name          string `json:"name"`            // 组名/姓名
	TaskNum       int64  `json:"task_num"`        // 任务数
	FinalTaskNum  int64  `json:"final_task_num"`  // 完成数
	RepairNum     int64  `json:"repair_num"`      // 返修数
	DelayNum      int64  `json:"delay_num"`       // 延期数
	FinalWorkTime string `json:"final_work_time"` // 完成工时
	AbnormalNum   int64  `json:"abnormal_num"`    // 异常数
}

type GetCountRes struct {
	FinalRate     float64 `json:"final_rate"`      // 完成率
	RepairRate    float64 `json:"repair_rate"`     // 返修率
	DelayRate     float64 `json:"delay_rate"`      // 延期率
	TaskTotalNum  uint64  `json:"task_total_num"`  // 任务总数
	TaskFinalNum  uint64  `json:"task_final_num"`  // 已完成的
	DelayFinalNum uint64  `json:"delay_final_num"` // 延期完成的
	ProgressNum   uint64  `json:"progress_num"`    // 进行中的
	NotFinalNum   uint64  `json:"not_final_num"`   // 未完成的
	NotStartNum   uint64  `json:"not_start_num"`   // 未开始的
	AbnormalNum   uint64  `json:"abnormal_num"`    // 异常的
	RepairNum     uint64  `json:"repair_num"`      // 返修
}

type TaskSimpleCountRes struct {
	Total    int64 `json:"total"`    // 总数
	Done     int64 `json:"done"`     // 完成
	UnDone   int64 `json:"un_done"`  // 未完成
	Abnormal int64 `json:"abnormal"` // 异常
}

type AbnormalCountReq struct {
	ProjectId      int64   `json:"project_id" binding:"required"`
	StepCategoryId []int64 `json:"todo_step_category_id_list"`
	StartTime      int64   `json:"start_time"`
	EndTime        int64   `json:"end_time"`
	DepartmentId   uint64  `json:"department_id"` // 部门id
}

// AbnormalCountRes 异常任务统计结果
type AbnormalCountRes struct {
	Total       int64 `json:"total"`        // 异常任务总数
	MarkedToday int64 `json:"marked_today"` // 已标记今日
	MarkedDelay int64 `json:"marked_delay"` // 已申请延期
	InProgress  int64 `json:"in_progress"`  // 处理中
	InWait      int64 `json:"in_wait"`      // 未处理
}
